from sqlalchemy import Table, Column, Integer, String
from sqlalchemy.orm import mapper
from database import metadata, db_session, init_db, engine
from sqlalchemy import ForeignKey
from sqlalchemy.orm import relationship, backref
from proyecto import Proyecto, proyecto
from estadoFase import EstadoFase, estadofase

class Fase(object):
    """ Clase que define el modelo de la tabla fase """
    
    query = db_session.query_property()

    def __init__(self, nombre=None, numero=None, descripcion=None, estadofase=None, proyecto=None, cant_items=None, cant_lineabase=None):
        """ Metodo init """
        self.nombre = nombre
        self.numero = numero
        self.descripcion = descripcion
        self.estadofase = estadofase
        self.proyecto = proyecto
        self.cant_items = cant_items
        self.cant_lineabase = cant_lineabase

    def __repr__(self):
        return self.nombre

fase = Table('fase', metadata,
    Column('idfase', Integer, primary_key=True),
    Column('nombre', String(50)),
    Column('numero', Integer),
    Column('descripcion', String(250)),
    Column('idestadofase', Integer, ForeignKey('estadofase.idestadofase')),
    Column('idproyecto', Integer, ForeignKey('proyecto.idproyecto')),
    Column('cant_items', Integer),
    Column('cant_lineabase', Integer)
)

mapper(Fase, fase, properties={
    'estadofase' : relationship(EstadoFase, backref='fases'),
    'proyecto' : relationship(Proyecto, backref='fases')
})
